package com.payment.system.mapper;

import com.payment.common.annotation.DataSource;
import com.payment.common.enums.DataSourceType;
import com.payment.system.domain.MerchantDay;
import com.payment.system.vo.DayMonthVo;

import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 日统计 数据层
 * 
 * @author payment
 * @date 2019-03-07
 */
public interface MerchantDayMapper {
	/**
	 * 查询日统计信息
	 * 
	 * @param id
	 *            日统计ID
	 * @return 日统计信息
	 */
	@DataSource(DataSourceType.SLAVE)
	public MerchantDay selectMerchantDayById(Long id);

	/**
	 * 查询日统计列表
	 * 
	 * @param merchantDay
	 *            日统计信息
	 * @return 日统计集合
	 */
	@DataSource(DataSourceType.SLAVE)
	public List<MerchantDay> selectMerchantDayList(MerchantDay merchantDay);

	/**
	 * 新增日统计
	 * 
	 * @param merchantDay
	 *            日统计信息
	 * @return 结果
	 */
	public int insertMerchantDay(MerchantDay merchantDay);

	/**
	 * 修改日统计
	 * 
	 * @param merchantDay
	 *            日统计信息
	 * @return 结果
	 */
	public int updateMerchantDay(MerchantDay merchantDay);

	/**
	 * 删除日统计
	 * 
	 * @param id
	 *            日统计ID
	 * @return 结果
	 */
	public int deleteMerchantDayById(Long id);

	/**
	 * 批量删除日统计
	 * 
	 * @param ids
	 *            需要删除的数据ID
	 * @return 结果
	 */
	public int deleteMerchantDayByIds(String[] ids);

	@DataSource(DataSourceType.SLAVE)
	MerchantDay selectMerchantDayByIdAndDate(@Param("merchantId") String merchantId, @Param("dateTime") String dateTime,
			@Param("dateTime1") String dateTime1);

	@DataSource(DataSourceType.SLAVE)
	public List<MerchantDay> selectMerchantListByTime(@Param("merchantId") String merchantId,
			@Param("startTime") String startTime, @Param("endTime") String endTime);

	@DataSource(DataSourceType.SLAVE)
	public MerchantDay selectMerchantDayByMerchantIdAndTime(@Param("id") String id, @Param("time1") String time1,
			@Param("time2") String time2);

	@DataSource(DataSourceType.SLAVE)
	public MerchantDay selectNewestDay(@Param("id") String merchantId);

	/**
	 * 查询日统计表 （昨日收益）
	 * 
	 * @param merchantId
	 * @return
	 */
	@DataSource(DataSourceType.SLAVE)
	MerchantDay selectMerchantByYesterdayProfit(@Param("merchantId") String merchantId);

	List<DayMonthVo> selectMerchantDayListByMerchantId(@Param("num") int num, @Param("size") Integer size,
			@Param("merchantId") String merchantId);

	public void deleteMerchantDayByTime(@Param("time")String time);
}